package com.zhouhailin.shirospringbootdemo.controller;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 订单
 *
 * 学习：
 * 1、授权的方法，使用的注解的方式
 * 1.1）@RequiresRoles          用来基于角色进行授权
 * 1.2）@RequiresPermissions    用来基于权限进行授权
 *
 * @Author zhouhailin
 * @date 2023/1/6 9:44
 */
@Controller
@RequestMapping("order")
public class OrderContoller {

    /**
     * 使用代码的方式进行授权
     *
     * @return
     */
    @RequestMapping("/save")
    public String save() {
        // 获取主体对象
        Subject subject = SecurityUtils.getSubject();
        if (subject.hasRole("admin")) {
            System.out.println("保存订单！");
        } else {
            System.out.println("无权访问！");
        }
        System.out.println("进入save方法。。。");

        return "redirect:/index.jsp";
    }

    /**
     * 使用注解的方式进行授权
     *
     * @return
     */
    @RequiresRoles(value = {"admin", "user"})   // 用来基于角色进行授权
    @RequiresPermissions("user:update:01")      // 用来判断权限字符串
    @RequestMapping("save")
    public String save01() {
        System.out.println("进入方法");
        return "redirect:/index.jsp";
    }

}
